package com.feihao.zhou.mapper;

import com.feihao.zhou.bean.Student;
import org.apache.ibatis.annotations.*;
import org.junit.Test;

import java.util.List;

public interface UseAnnotationToCRUDForSingleTable {


    //单表查询所有：

    @Select("select * from Student")
    List<Student> selectStudentAll();

    //新增数据：
    @Insert("insert into student values(#{id},#{name},#{age},#{cid})")
    abstract Integer insertStudent(Student student);

    //新增数据：
    //返回主键自增后的值 ：@Options(useGeneratedKeys = true,keyColumn = "id" , keyProperty = "id")
    @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id")
    @Insert("insert into student values(#{id},#{name},#{age},#{cid})")
    abstract Integer insertStudent2(Student student);

    //修改学生：

    //注意： sql语句的 #{...}  是根据下面参数提供的，多参数时，需手动加上@Param标记唯一！！！
    @Update("update student set name=#{p1},age=#{p2} where id=#{p3}")
    abstract Integer updateStudent(@Param("p1") String name1, @Param("p2") Integer age1, @Param("p3") Integer id1);


    //数据表中存在外键约束，不能直接删除
    //小小备注  ：当参数只有一个时， 在#{}里面可以随意写参数  ，因为只会读取到这一个参数
    @Delete("delete  from student where id = #{554554555}")
    Integer deleteStudent(Integer id);


    //根据id查询学生：id
    @Select("select * from student where id = #{8858}")
    Student selectStudentById(Integer id);

}
